package functional.lambda;

import java.util.function.Function;

/**
 * Lambda 表达式：方法引用（Method Reference）中的构造器引用
 *
 * @author Liu Yicong
 * @date 2025/10/8
 */
public class MethodRefConstruct {

	static class Message {
		public Message(String content) {
			System.out.println("Creating Message with: " + content);
		}
	}


	public static void main(String[] args) {
		// Function<String, Message> 接口的抽象方法签名是 Message apply(String t)
		// 它与 Message(String) 构造函数的签名完全匹配。

		// 原始 Lambda 表达式
		Function<String, Message> messageCreator = content -> new Message(content);
		messageCreator.apply("Hello World");

		// 使用构造器引用
		Function<String, Message> messageCreatorRef = Message::new;

		messageCreatorRef.apply("Hello World");
		// 效果：等同于 new Message("Hello World");
	}
}
